/*
XEvol3D Rendering Engine . (http://gforge.osdn.net.cn/projects/xevol3d/) 
Stanly.Lee 2006


This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
*/

#ifndef __LABOR_MATH_DECLARTION_H__
#define __LABOR_MATH_DECLARTION_H__


#include "../LaborCoreDef.h"
#include <math.h>
#include <memory.h>
//#include "LaborMathInclude.h"
NAMESPACE_LABOR3D_BEGIN


class CLMatrix4x4;
class CLMatrix3x3;

LABORCORE_TEMPLATE_EXPORT  template <typename _Type> class LABORCORE_API TPoint2;
LABORCORE_TEMPLATE_EXPORT  template <typename _Type> class LABORCORE_API TPoint3;
LABORCORE_TEMPLATE_EXPORT  template <typename _Type> class LABORCORE_API TPoint4;

template <typename _Type> class LABORCORE_API xtriidx;

typedef LABORCORE_API TPoint2<lscalar>       CLPoint2;
typedef LABORCORE_API TPoint3<lscalar>       CLPoint3;
typedef LABORCORE_API TPoint4<lscalar>       CLPoint4;

typedef LABORCORE_API TPoint2<double>          CLPoint2r;
typedef LABORCORE_API TPoint2<float>             CLPoint2f;

typedef LABORCORE_API TPoint2<unsigned int>  CLPoint2ui;
typedef LABORCORE_API TPoint2<int>                 CLPoint2i;


typedef LABORCORE_API TPoint3<double>           CLPoint3r;
typedef LABORCORE_API TPoint3<float>              CLPoint3f;

typedef LABORCORE_API TPoint3<unsigned int>  CLPoint3ui;
typedef LABORCORE_API TPoint3<int>                 CLPoint3i;


typedef LABORCORE_API TPoint4<double>          CLPoint4r;
typedef LABORCORE_API TPoint4<float>             CLPoint4f;

typedef LABORCORE_API TPoint4<unsigned int>  CLPoint4ui;
typedef LABORCORE_API TPoint4<int>                 CLPoint4i;


typedef xtriidx<unsigned int>                   xFaceIndex32_U;
typedef xtriidx<int>                                  xFaceIndex32;
typedef xtriidx<unsigned short>               xFaceIndex16_U;
typedef xtriidx<short>                              xFaceIndex16;


typedef CLPoint4        float4;
typedef CLPoint4r       double4;
typedef CLPoint4i       int4;
typedef CLMatrix4x4     float4x4;

typedef CLPoint3        float3;
typedef CLPoint3r       double3;
typedef CLPoint3i       int3;
typedef CLMatrix3x3     float3x3;

typedef CLPoint2  float2;
typedef CLPoint2r double2;
typedef CLPoint2i int2;
typedef double    xdouble ;

class xquat;

const double LM_PI = 3.1415926535897932;


NAMESPACE_LABOR3D_END

#endif


